/**
 * 统一管理输入输出流
 */
import readline from 'readline';

class CliManager {
  private rl: readline.Interface;
  private isPromptVisible = false;

  constructor() {
    this.rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout,
      prompt: '\n👤 你：'
    });
  }

  // 获取原始接口（谨慎使用）
  get interface(): readline.Interface {
    return this.rl;
  }

  // 安全写入输出
  writeOutput(content: string): void {
    this.hidePrompt();
    process.stdout.write(content);
  }

  // 显示提示符
  showPrompt(): void {
    if (!this.isPromptVisible) {
      this.isPromptVisible = true;
      this.rl.prompt(true);
    }
  }

  // 隐藏提示符
  hidePrompt(): void {
    if (this.isPromptVisible) {
      this.isPromptVisible = false;
      process.stdout.write('\x1B[2K\r'); // 清除当前行
    }
  }

  // 安全关闭
  close(): void {
    this.rl.close();
  }
}

// 保证全局唯一
export const cli = new CliManager()
